# 变量名的定义

#定义几个变量名，分别储存姓名，身高，体重，性别，年龄
   # name = '小米'
  # shenggao = '170'
  # tizhog4n = '1'
  # sex = '男'
  # age = '18'
# print(name,shenggao,tizhog4n,sex ,age)

#变量可以储存的数据类型
#数值 ，字符串，列表，字典，集合
###数值型：整数，小数，布尔值
  # num = 1
  # num = -4
  # num = 0.0
  # num = True
  # num = False

### 数值型的转换
  # 整数转换为 浮点数   float( 要转化的对象 )     转化为小数
  # 整数转化为  布 尔      bool(要转化的对象)    转化为布尔值     True/False
  # num = 4
  # numm = float( num )
  # print(numm)
#字符串   有字符组成1，二边要有  "",''
  # say =  "张说，'今天不放假'"
###查看数据的类型， type()    ,查看变量明的地址  id()
#运算符
  #  +  -  *  /    %   //    **
  #               取余 取整  求次方
  # num = 10
  # num1= 5
  # numm = num + num1
  # print(numm)
###练习：1、 已知身高1.55米，体重50公斤，体脂率 BIM = 体重/（身高*身高）计算体脂率（取整数）？
  # num = 1.55
  # num1 = 50
  # bim = int (num1 / (1.55**2))
  # print(bim)


###2、一年级一班有18个男同学，17个女同学，现在有109个巧克力，平均分给各位同学，每人能分几个，余几个？
  # num = 18
  # num1 = 17
  # di = 109
  # mei1 =  di//(num+num1)
  # mei2 =  di%(num+num1)
   # print(mei1,mei2)
###赋值运算
   #num = num + 1  #  num += 1
   #num = num - 2  # num-= 2

### 比较运算
  # >  >=  <    <=   ==   !=
  # num1 =100
  # num2 = 120
  # num3 = num1 > num2
  # print(num3)
###小米今年18岁，他能否去上网
  # nl = 18
  # re = nl >=18   #比较会产生一个值，所以要赋值
  # print(re)

  # jia = False     #  False 表示有
  # res = jia == False
  # print(res)

#逻辑运算符      and  or  not
###关于去网吧上网，规定，年龄大于18，并且带身份证裁能上网，小米今年23岁，他带了生分证(1表示身份证携带)
  # age = 23
  # id = 1
  # res=age >=18 and id ==1
  # print(res)
 #  input()  里面可以写入提示内容    ；作用在控制台输入内容 返回给 input ()函数
    #a = input('请输入内容密码')    #不管输入的内容是什么，返回的数据是字符串类型
    #print(a)
#### 制作伪登陆器 ，登陆账号和密码  账号：123456  密码：789
# user = input('账号:')
# password = input('密码:')
#   # res = user == '123456' and password =='789'
# print('账号:{}\n密码:{}'.format(user,password))
  # print(res)
# ##print (values,sep'',end='\n') #第一个为值，第二个为指定分隔符，第三默认的是换行符
  # a = '你好'
  # b = 'ni'
  # c= 'hu'
  # print(a,b,c,sep=',0',end ='-------')   #
  # print(a,b,c,sep=',0')
  # print(a,b,c,sep=',0',end ='-------')
###格式化输出
# tel = '13096'
# data = '2021-11-30 -- 2021-12-30'
# print('号码为:{}的用户\n在时间内为:{}\n已经消费500元'.format(tel,data))
###成年人的体脂率体脂率计算公式
# 正常成年人的体脂率分别是男性0.15--0.18和女性0.25--0.28
#eval ()     作用:蒋字符串的引号去掉

  # height = input('请输入身高(米):')
  # height = eval(height)
   # weight = input('请输入体重(kg):')
  # weight = eval(weight)
  #
  # age = int(input('请输入年龄:'))
  # sex = int(input('请输入性别(男：1，女：0):'))
  # BIM = 体重/（身高*身高）
#   BIM = weight/(height**2)
# TZL = (1.2 * BIM + 0.23 * 年龄 - 5.4 - 10.8 * 性别) / 100
#   TZL = (1.2*BIM+0.23*age-5.4-10.8*sex)/100
#   print('您的体脂率为:\n',format(TZL))
###小米19岁，判断他成年没
# age = 19
# if age>=18:             #注意有冒号
#     print('成年了')
# else:                   #注意有冒号
#   print('未成年')
###判断账号和密码正确是否
# if user == '123456' and passord =='789':
#     print('登陆成功')
# else:
#     print('登陆失败')
###多条件判断
# if 条件1：
#         条件1满足时，要做的事情
#         ······
# elif 条件2：
#         条件2满足时，要做的事情
#         ······
# else：
#         以上条件都不满足时，要做的事情
###嵌套
# if user == '123456':
#     if passworf == '789':
#         print('登陆成功')
#     else:
#         print('密码错误')
# else:
#     print('账号错误，登陆失败')
###循环嵌套
#num = 1
#while num < 20:      #循环条件
 #   print('跑了一圈')  #循环体
  #  num += 1              #计数处理(主要同级处理 tab )
   # print(num)            #循环体

# num = 1
# total = 2
# while num < 20:      #循环条件
#     total = total+num  #total+=num
#     print(num,total)    #打印
#     num+=1          #加一


###continue：结束当前循环           break    结束整个循环

###  重 0 输入99
# num = 0
# while True:
#     print(num)
#     if num  == 100 :
#         break   #结束整个循环
#     num += 1
#
###打印奇数
# num = 0
# while True:             #循环条件
#     if num %2 == 0 : #total+=num
#       num+=1
#       continue        #结束本次循环，进去下次循环
#     print(num)    #打印
#     num+=1
###伪登陆器，账号或者密码错误时，需要重新输入。直到没有错误为止(有循环思路)
# while True:
#     user = input('账号:')
#     password = input('密码:')
#
#     if user == '123' and password =='456'  :
#         print('登陆成功')
#         break
#     else:
#      print('登陆失败')

####方阵报数 5行 5 列
# row = 1
# while row <=5 :   #  for row in range(5)
#     print('第{}行'.format(row))
#
#
#     columns =1
#     while columns <=5:
#      print('第{}个'.format(columns))
#      columns += 1
#     row+= 1
# ##第3行
# ##第1列  第2列  第3列  第4列  第5列
# row=1
# while row<=5:
#     print('第{}行'.format(row))
#     row += 1
#     columns = 1
#     while columns <=5:
#         print('第{}列'.format(columns), end='  ')  #空几格
#         columns +=1
#     print()   #自带空格符

#print (values,sep'',end='\n') #第一个为值，第二个为指定分隔符，第三默认的是换行符
###for    .......... in range(5):      range(1,5,1)  #1开始，5结束，1为步长
# for i in range(20) :
#  print('跑了一圈')
#  print(i+1)
# for i in range(1,12,2):
#  print(i)

# row = 1
# for row in range(1,6,1):
#       print('第{}行'.format(row))
#
#
#       columns =1
#       while columns <=5:
#        print('第{}个'.format(columns),end='   ')
#        columns += 1
#       row+= 1
#       print()

###  len() 函数获取字符串长度
# str = "华西这样培训"
# n=len(str)

# print(n)
### 索引   通过下表去访问值
# str = "华西这样培训"
# a = str[4]
# print(a)
###   切片
#str[开始位置：结束位置:步长]
# str = "华西这样培训"
# n=str[3:5:1]
# print(n)
#
#### 取出test1里的中文
# test1='this 我爱 string 祖国 example'
# str=test1[5:7:1]
# test1=test1[15:17:1]
# print(str,test1)

###遍历字符串
# test1='this 我爱 string 祖国 example'
# for i in test1:
#     print(i)
###'字符或字符串' .jo in (字符串对象)   获取字符串对象中所有的字符，并将它们用指定字符串连接成一个人新字符串
# test1='this 我爱 string 祖国 example'
# str = '*'.join(test1)
# print(str)
# t*h*i*s* *我*爱* *s*t*r*i*n*g* *祖*国* *e*x*a*m*p*l*e

###指定字符串的删除（左边）  字符串.lstrip()
# test1='this 我爱 string 祖国 example'
# ste=test1.lstrip('t')
# print(ste)
###字符串.rstrip(指定字符)   删除字符串右边的字符
# test1='this 我爱 string 祖国 example'
# n = test1.rstrip('ple')
# print(n)       # this 我爱 string 祖国 exam

###字符串.strip(指定字符)    删除字符串两边的字符
# test1='athis 我爱 string 祖国 examplea'
# n=test1.strip('a')
# print(n )      #this 我爱 string 祖国 example
###    replace            str.replace(旧的字符串，新的字符串，替换的次数)  不写次数替换的为全部
# test1='this 我爱 string 祖国 example'
# n=test1.replace('th','sh',1)
# print(n)     #   shis 我爱 string 祖国 example
###str.split(分隔符，)    通过制定的字符对字符串进行切片，
# stnumr= 'abc-scv-ddd-abv'
# str_split=str.strip('-',2)
# print(str_split)
###str.caplitalize()      将字符串第一个字符转换为大写，其余为小写
# str = 'kjfjjf'
# n=str.capitalize()
# print(n )
###字符串的查找      find():检测某个字符串是否在这个字符串里面，如果在字符中返回这个子串在字符串里面的位置下标，否则返回-1
# my="ab and hd hhd and hh"
# print(my.find('and'))   #3
# print(my.find('ands'))   #-1     rfind:和find功能一致 但是下标都从左往右开始的
#print(my.rfind('and'))    #14
#print(my.index('and'))     #3
#print(my.index('ands'))     #index与find功能相同，但是这个会报错 这点与find不同
#rindex 类型与rfind一样
###count()   统计指定字符出现的次数
# my='ab and hd hhd and hh'
# n=my.count('and')
# n=my.count('h',0,20)
# print(n)       #2    #5
#练习：
# str1 = "this is string example....wow!!!"
#1、str1里字符串’is‘ 有几个
 # print(str1.count('is'))   # 2
# 2、返回字符串里’is‘的下标
 # print(str1.find('is'))     # 2
# 3、将str1的首字母大写
 # print(str1.capitalize())
# 4、删除最右边的那一个’！‘  字符串.rstrip(指定字符)   删除字符串右边的字符
 # print(str1.replace('!','',1))
# 5、将str1里的所有字符用’*‘连接起来
 #'字符或字符串' .jo in (字符串对象)   获取字符串对象中所有的字符，并将它们用指定字符串连接成一个人新字符串
 # print('*'.join(str1))      #t*h*i*s* *i*s* *s*t*r*i*n*g* *e*x*a*m*p*l*e*.*.*.*.*w*o*w*!*!*!
###str.endswith(子串，开始下标，结束下标) 检查字符串是否以为指定字符串结尾，是返回TRUE 否则返回 False
# str1 = "this is string example....wow!!!"
# n = str1.endswith('!')
# print(n)     #True
# ##startswith()：检查字符串是否是以指定⼦串开头，是则返回 True，否则返回 False。如果设置开始和结束位置下标，则在指定范围内检查。
# str1 = "this is string example....wow!!!"
# n = str1.startswith('this')
# print(n)   #True

###列表
# a = ['张三',1,2,3,True,'李阳']
###  b=[]  创建空列表
# c=len(a )
# print(c )
###         max (列表)
# aa = [1,2,7,2,9,10,6]
# bb = max(aa)
# cc= min(aa)
# print(cc,bb)    #1   10

##增删改查     增   列表名.append()
# a = ['张三',1,2,3,True,'李阳']
# a.append('王五')
# print(a)        #['张三', 1, 2, 3, True, '李阳', '王五']
###    列表名.extend(要增加的迭代对象)
# a.extend(['刘大大','章二','王三三',])
# print(a )    #['张三', 1, 2, 3, True, '李阳', '王五', '刘大大', '章二', '王三三']
# ###    列表名.insert(要插入的位置，要插入的数据)   在指定下标，插入数据，后续数据依次往后移动
# a.insert(1,'王五')
# print(a)      #['张三', '王五', 1, 2, 3, True, '李阳', '王五', '刘大大', '章二', '王三三']

###删除     列表名.pop(指定下标)
# a = ['张三',1,2,3,True,'李阳']
# a.pop(2)
# print(a )   #  ['张三', 1, 3, True, '李阳']

###     列表名.(指定数据)    删除指定数据
# a = ['张三',1,2,3,True,'李阳']
# a.remove('张三')
# print(a )    #[1, 2,3, True, '李阳']

###   列表名.clear()    清空列表中的所有数据，只保留一个空列表
# a = ['张三',1,2,3,True,'李阳']
# a.clear()
# print(a )

###   del 变量名[要删除的下标]
# a = ['张三',1,2,3,True,'李阳']
# del a[0]
# print(a )       # [1, 2, 3, True, '李阳']

###   练习
# a=[i*'a' for i in range(10)]
# a.pop(-1)
# print(a )
# a.remove('aaaa')
# print(a)
# del a[1]
# print(a)
#### 改数据            将访问的数据，改为新数据
# a = ['张三',1,2,3,True,'李阳']
# a[0]='李四'
# print(a)   #['李四', 1, 2, 3, True, '李阳']
###  改排序       列表名.sort(rever=True)  对列表进行排序(同一类型)
# a = [66,1,2,3,10,5]
# a.sort(reverse=True)   #False  升序或者倒叙
# print(a)    #[66, 10, 5, 3, 2, 1]
###改位置(倒叙)  位置相反过来
# a = [66,1,2,3,10,5]
# a.reverse()
# print(a)   #[5, 10, 3, 2, 1, 66]
#
 ###  查
#列表名.index('指定数据')  通过指定数据查找所对应的下标，会返回数据
# a = [66,1,2,3,10,5]
# n = a.index(66)
# print(n)   #0
###  访问
# a = [66,1,2,3,10,5]
# c = a[0]
# print(c)   #66
#统计列表元素
# a = [66,1,2,3,10,5]
# b= a.count(66)
# print(b)   #1
###判断指定元素在不在列表中(in   not in )       返回 True/ False
# a = [66,1,2,3,10,5]
# c = 66  not in a
# print(c)    #False
###列表的切片     列表名.[start:stop:step]    到stop-1结束   返回一个列表
# a = [66,1,2,3,10,5]
# aa = a[1:4]
# print(aa)   #  [1, 2, 3]
##列表遍历
# a = [66,1,2,3,10,5]
# for i in  a :
#     print(i)
#     print('你好')
#name_list = ['张三', '李四', '王五']
# 现有一个列表，列表中，有张三、李四、王五的名字
# 现在需要通过控制台输入一个名字
# 先判断列表中存在与否， 若不存在则添加到列表中，若存在则不添加，打印已存在
#### 经典
# a = ['张三','李四','王五']
# while True:
# for i in range(5):
#     c=input('请输入一个名字：')
#     if c in a:
#             print('已经存在')
#     else:
#             a.append('c')
#     print(a)


###字典  #冒号:左边为键(key)  不可变必须为唯一值, 右边为值(values)，可以重复出现。  字典不存在下标，key可以当做下标
# a={'name':'张三','age':'18','sex':'男'}
#字典的增删改查
# 增  字典名['key'] = 数据  若key 不存在，则是增加
# a['weight'] =18
# print(a )   #
# # 改
# a['weight'] =15
# print(a)   #{'name': '张三', 'age': '18', 'sex': '男', 'weight': 15}

#删
# a={'name':'张三','age':'18','sex':'男'}
# del a['name']
# print(a)    #{'age': '18', 'sex': '男'}
# a={'name':'张三','age':'18','sex':'男'}
# a.pop('name')  #删除指定key
# print(a)  #{'age': '18', 'sex': '男'}
# a.clear()       #清空数据

####  查
# a={'name':'张三','age':'18','sex':'男'}
# b=a['name']
# print(b )   #张三
##查看所有的key 和值
# b=a.kets()
# c = a.values()
# print(b)
 #判断指定的key 在不在字典中

#### python函数
##自定义函数
#def  函数名():      参数根据我们的实际需求
# def add_num():    #add_num()    无参数，函数名
#     c =1+2
#     print(c )
#调用函数    函数名(参数)
# add_num()        #3
###有参数的函数名
# def add_ad(a,b):
#     c=a+b
#     print(c )
#调用函数
# add_ad(100,200)    # 300

# 1、公历闰年能被4整除且不能被100整除的为闰
# def add_n(c):
#     if c%4==0 and c%100!=0:
#      print('100是润年')
#     else:
#      print('100不是润年')
# c=eval(input('请输入年份：'))  #“eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。
# #调用函数1
# add_n(c)   # 100不是润年

# def add_abc(a,b,c):
#     n=a+b+c
#     t=a*b*c
#     list =[n,t]  #多个返回值，定义一个列表装这些返回值
#     return list  #return后续代码不会执行
# #定义的函数有就几个参数，调用的时候就要传入几个参数
# d = add_abc(1, 2, 7)
# print(d)       # [10, 14]
# 练习：
# 步骤1、用户输入身高（米）、体重（kg），性别（男或女）调用自定义函数getbim（） 去计算他的体重指数，
# 体重指数 = 体重 /（身高 * 身高）
# 步骤2、用步骤1得到了体重指数，再调用自定义函数
# pd_weight()
# 去判断，体脂率正常打印”你的体重指数处于正常范围，“，体重指数不正常打印“你的体重指数不在正常范围”
# 正常成年人的体重指数分别是男性20 - 25, 和女性19 - 24

# def getbim(h,w):    #h 是身高   w 是体重
#     bim = w/(h*h )
#     return bim
#
#
# def pp_wight(b,sex):   #b是体重指数，s是性别
#  nan=sex=='男' and 20<=b<=25
#  nv=sex=='女'and 19<=b<=24
#  if nan or nv:
#      print('你的体重指数在正常范围')
#  else:
#      print('你的体重指数不在正常范围')
#
# # 控制台输入身高体重性别
# height =eval(input('请输入你的身高(mi):'))
# weight = eval(input('请输入你的体重(kg):'))
# sex =input('请输入你的性别(男/女)')
# #调用
# bim = getbim(height,weight)
# print(bim )
# pp_wight(bim,sex)

###函数的说明文档
#def 函数名(参数)
""" 说明文档的位置
      说明以下信息：
      参数h:是身高，类型:数值型
      参数w:体重，类型：数值型
      返回值bim：体重指数，类型是数值类型
"""
#  匿名函数
res = (lambda  a,b:a+b)(1,2)
print(res )    #  3
